A virtual machine (VM) is a software implementation of a computer that executes programs in a way that is similar to a physical machine. The virtualization technology allows the sharing of the underlying physical hardware resources between different virtual machines, each running its own operating system (as a guest). The virtualization, which is typically performed by a hypervisor, allows multiple operating systems to run concurrently on a host computer. The hypervisor presents the guest operating systems with a virtual operating platform and monitors the execution of the guest operating systems. Further, the hypervisor defines the allocation of resources (e.g., CPU power, memory, network bandwidth, etc.) for each guest operating system.
Virtualization of computing and networking resources, such as servers, application delivery controllers (ADCs), and load balancers can improve the performance of a service provider's datacenters. Further, virtualization of such resources may reduce costs and overhead to the service providers. For example, most applications executed in datacenters utilize between 5% and 10% of the resources of the physical machine CPUs most of the time. However, by deploying such applications as virtual machines in one physical machine, utilization of 80% can be achieved. This can be achieved without compromising the isolation and independence of the physical machines hosting the applications. As a result, adoption of virtualization technologies in datacenters has been rapidly increasing over the last few years to the extent that it is expected that most services will soon be deployed as virtual machines (VMs).
Typically, a single physical machine is not sufficient to support multiple VMs, as in most cases the average resource consumption may exceed the capacity of one physical machine. With this aim, the VMs are distributed among several physical machines, such that the total average resource consumption of the VMs in one physical machine does not exceed a configurable threshold (e.g. 80%) of the physical machine's capacity. However, because resource consumption by VMs dynamically varies, a physical machine may be overload by instances of peak utilization by the VMs it hosts. Therefore, there is a need to balance the utilization of resources of physical machines by VMs hosted therein. This task is known as a workload balancing (WLB).
Prior art solutions perform the workload balancing task by a VM migration process, which is schematically illustrated in FIG. 1. A physical machine 100 executes VMs 111, 112, and 113. When it is determined that the physical machine 100 is busy (e.g., over 80% utilization) one or more VMs 111-113 are migrated to a physical machine 120 to support the additional VMs. As illustrated in FIG. 1, VMs 111 and 113 are migrated to the physical machine 120. Typically, the VM migration process requires that both the source physical machine (e.g., machine 100) and the target physical machine (e.g., machine 120) share the same storage 130 where the VM file-system (VMFS) resides. The VM migration process is performed by incrementally copying the memory image of the VM (e.g., VM 111), including the content of its registers, from the source physical machine to the target physical machine. Once the memory image has been copied, the execution of the VM on the source physical machine is halted, and execution then resumes on the target physical machine 120. The execution of the VM on the target machine is resumed from the next instruction subsequent to the instruction step in which it was stopped.
As the VMFS resides on the shared storage 130, there is no need to synchronize large amounts of persistent data and the migration can be done while turning the VM off for a very short period of time.
However, such a VM migration process is inefficient as it limits the performances of both the VMs and physical machines. Specifically, the conventional VM migration process suffers from the following drawbacks. First, the service throughout the VM is significantly degraded during the migration period, because the incremental memory replication of the VMs consumes CPU and network resources. Such degradations of service throughout can cause a temporary discontinuity of service at the switch-over point in time. Even though such a discontinuity period may be short (e.g., up to a second), for mission critical applications, this cannot be tolerated. Moreover, the application performance degradation time can be much longer, which also cannot be tolerated in mission critical applications.
In addition, the conventional VM migration process requires that all physical machines reside on the same network link (e.g., layer 2 network, VLAN, etc.) and be connected to the same shared storage domain in order that the VM can keep its IP address and its file system after the migration. Lastly, the conventional VM migration process consumes CPU and network resources used for copying the VM's memory image, thereby aggravating the situation on the congested physical machine. Due to these drawbacks network operators often prevent the migration of VMs. However, this may sacrifice the performance of the datacenters or result in an underutilized datacenter. Thus, the conventional VM migration process is an inefficient approach for workload balancing.
It would be therefore advantageous to provide a solution that would resolve the shortcomings of prior art techniques for workload balancing.